#!/usr/bin/env python3
"""
构建脚本：用于生成 wc.exe 可执行文件
"""

import os
import sys
import shutil


def build_executable():
    """使用 PyInstaller 构建 exe 文件"""

    try:
        # 尝试导入 PyInstaller
        from PyInstaller import __main__ as pyi_main
    except ImportError:
        print("正在安装 PyInstaller...")
        import subprocess
        subprocess.check_call([sys.executable, "-m", "pip", "install", "pyinstaller"])
        from PyInstaller import __main__ as pyi_main

    print("开始构建 wc.exe...")

    # 构建参数
    args = [
        'wc_kuozhan.py',
        '--onefile',  # 打包成单个exe文件
        '--name=wc',  # 输出文件名
        '--console',  # 控制台程序
        '--clean',  # 清理临时文件
        '--distpath=./out_kuozhan',  # 输出目录
        '--workpath=./build_kuozhan',  # 临时目录
    ]

    try:
        # 运行 PyInstaller
        pyi_main.run(args)
        print("构建成功！")
        print("可执行文件位置: out_kuozhan/wc.exe")

        # 检查文件是否生成
        if os.path.exists("out_kuozhan/wc.exe"):
            print("✓ wc.exe 文件已生成")
            return True
        else:
            print("✗ wc.exe 文件未生成")
            return False

    except Exception as e:
        print(f"构建过程中出现错误: {e}")
        return False


def clean_build_files():
    """清理构建产生的临时文件"""
    folders_to_remove = ['build', '__pycache__']
    files_to_remove = ['wc.spec']

    for folder in folders_to_remove:
        if os.path.exists(folder):
            shutil.rmtree(folder)
            print(f"已清理目录: {folder}")

    for file in files_to_remove:
        if os.path.exists(file):
            os.remove(file)
            print(f"已清理文件: {file}")


if __name__ == "__main__":
    success = build_executable()
    if success:
        print("\n构建完成！您现在可以使用: wc.exe -c file.txt")
        # 可选：清理临时文件
        # clean_build_files()
    else:
        print("\n构建失败，请检查错误信息")
        sys.exit(1)